package com.blog.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 返回状态枚举类
 *
 * @author wmb
 *
 * @since 2021-2-7
 */
@Getter
@AllArgsConstructor
public enum ErrorConstant {

    // 9999 业务异常

    UNKNOWN_EXCEPTION(10000, "未知异常"),
    ARGUMENT_TYPE_MISMATCH(10001, "参数类型不匹配"),
    REQ_METHOD_NOT_SUPPORT(10002,"请求方式不支持"),
    FORMAT_ERROR(10003, "参数格式错误"),
    ARGUMENT_ERROR(10004, "输入参数格式不正确"),

    USERNAME_PASSWORD_ERROR(20001, "用户名不存在或密码错误"),
    USER_ID_IS_NOT_NULL(20002, "用户id不允许为空"),
    OLD_PASSWORD_IS_ERROR(20003, "密码修改失败，旧密码匹配不成功"),
    PARAM_IS_NULL(20004, "参数为空"),
    QUERY_META_IS_NOT_ONLY_ONE(20005, "查询到的项目数不止一个"),
    VISIT_FAILED(20006, "访问失败"),
    COMMENT_TOO_FREQUENTLY(20007, "您发表评论太快了，请过会再试"),
    CONTENT_IS_NOT_EXISTS(20008, "文章已被删除"),
    COMMENT_FAILED(20009, "评论失败"),
    DELETE_COMMENT_FAILED_COMMENT_IS_NOT_EXISTS(20010, "删除评论失败，文章已被删除"),
    COMMENT_IS_NOT_EXISTS(20011, "评论查询失败"),
    META_IS_EXISTS(20012, "该项目已存在")
    ;

    private final Integer errorCode;
    private final String errorMsg;

    /**
     * 通过状态码获取枚举对象
     *
     * @param code 状态码
     *
     * @return 枚举对象
     */
    public static ErrorConstant getByCode(int code) {
        for (ErrorConstant errorConstant : ErrorConstant.values()) {
            if(code == errorConstant.getErrorCode()){
                return errorConstant;
            }
        }
        return null;
    }

}
